# user.py
# 用户相关Pydantic模型示例

# 创建用户的 Pydantic 模型
# 文件路径: app/schemas/user.py
from pydantic import BaseModel, EmailStr
from datetime import datetime

# ----------------- Base Schema -----------------
# 定义所有 User 相关 Schema 共有的字段
class UserBase(BaseModel):
    name: str
    email: EmailStr


# ----------------- Input Schemas (用于接收数据) -----------------

# Schema for Creating a User (对应“求职申请表”)
class UserCreate(UserBase):
    password: str  # 创建时需要密码


# Schema for Updating a User (可选，所有字段都可选)
class UserUpdate(BaseModel):
    name: str | None = None
    email: EmailStr | None = None
    password: str | None = None


# ----------------- Output Schemas (用于返回数据) -----------------

# Schema for Reading/Returning a User (对应“员工工牌”)
# 它继承自 UserBase，所以自动拥有 name 和 email 字段
class User(UserBase):
    id: int
    is_active: bool
    created_at: datetime
    # 注意：这里完全没有 password 或 hashed_password 字段

    class Config:
        # 这个配置是让 Pydantic 能够从 SQLAlchemy ORM 对象属性中读取数据的关键
        from_attributes = True